/*
@Time : 2021/2/19 17:19
@Author : 吴周海
@Mail: wzh200x@126.com
@File : PayCallBack.go
@Software: GoLand
*/
package controllers

import (
	"GameApiServer/function"
	"GameApiServer/models"
	"GameApiServer/requestData"
	beego "github.com/beego/beego/v2/adapter"
	"github.com/beego/beego/v2/core/logs"
)

type LeTangPayCallBack struct {
	beego.Controller
}

func (this *LeTangPayCallBack) Get() {
	p := requestData.LeTangPayBackData{}
	//b := &backData.NormalBackData{
	//	Code: 0,
	//	Info: "",
	//	Ext:  "",
	//}
	// 解析数据
	if err := this.ParseForm(&p); err != nil {
		logs.Error("LeTangPayCallBack args error" + err.Error())
		this.Ctx.Output.Body([]byte("1"))
		return
	}
	// 开始处理
	// 创建订单数据库对象
	dp := models.LeTangNewPayRecordInfo(&p)
	// 保存请求的IP
	dp.Ip = this.Ctx.Request.RemoteAddr
	// 判断订单是否存在,存入数据库
	// 订单已经存在
	if dp.CheckIsExist() == true {
		logs.Error("LeTangPayCallBack repeat order" + dp.Order)
		this.Ctx.Output.Body([]byte("1"))
		return
	}
	// 判断订单是否是付款成功
	if dp.IsPaySuccess != "0" {
		logs.Error("LeTangPayCallBack no pay order" + dp.Order)
		this.Ctx.Output.Body([]byte("1"))
		return
	}
	// 执行充值操作,通知游戏服务器
	// 充值成功,修改标识
	if function.NoticeServerPay(dp) == true {
		dp.UpdatePayStatus()
	} else { // 充值失败,记录原因,将失败订单信息放到补单列表中
		function.ServerPayFailed(dp)
	}
	this.Ctx.Output.Body([]byte("1"))
	return
}
